package Algorithm.interview;

/**
 * @Author self
 * @Date 2024/10/17 20:50
 * @Describe 三个线程顺序打印abc
 *
 *该函数使用 CompletableFuture 实现异步任务的链式调用，按顺序打印字符 'a'、'b' 和 'c'：
 * 创建一个异步任务 futureA，打印字符 'a'。
 * 在 futureA 完成后，创建另一个异步任务 futureB，打印字符 'b'。
 * 在 futureB 完成后，创建第三个异步任务 futureC，打印字符 'c'。
 * 使用 futureC.join() 等待所有任务完成，确保按顺序打印 'abc'。
 */
import java.util.concurrent.CompletableFuture;

public class PrintABCWithCompletableFuture {
    public static void main(String[] args) {
        // 创建一个独立的异步任务，打印字符'a'
        CompletableFuture<Void> futureA = CompletableFuture.runAsync(() -> System.out.print("a"));

        // 在futureA完成后，创建一个新的异步任务打印字符'b'
        CompletableFuture<Void> futureB = futureA.thenRun(() -> System.out.print("b"));

        // 在futureB完成后，创建一个新的异步任务打印字符'c'
        CompletableFuture<Void> futureC = futureB.thenRun(() -> System.out.print("c"));

        // 等待所有任务完成，确保'abc'按顺序打印
        futureC.join();
    }

}

